package com.aspose.cells.examples.asposefeatures.charts;

import java.io.FileOutputStream;

import com.aspose.cells.Cells;
import com.aspose.cells.Chart;
import com.aspose.cells.ChartPoint;
import com.aspose.cells.ChartPointCollection;
import com.aspose.cells.ChartType;
import com.aspose.cells.Color;
import com.aspose.cells.ImageFormat;
import com.aspose.cells.ImageOrPrintOptions;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.examples.Utils;

public class AsposeChartToImage
{
    public static void main(String[] args) throws Exception
    {
        // The path to the documents directory.
        String dataDir = Utils.getDataDir(AsposeChartToImage.class);

        //Create a new Workbook.
        Workbook workbook = new Workbook();

        //Get the first worksheet.
        Worksheet sheet = workbook.getWorksheets().get(0);

        //Set the name of worksheet
        sheet.setName("Data");

        //Get the cells collection in the sheet.
        Cells cells = workbook.getWorksheets().get(0).getCells();

        //Put some values into a cells of the Data sheet.
        cells.get("A1").setValue("Region");
        cells.get("A2").setValue("France");
        cells.get("A3").setValue("Germany");
        cells.get("A4").setValue("England");
        cells.get("A5").setValue("Sweden");
        cells.get("A6").setValue("Italy");
        cells.get("A7").setValue("Spain");
        cells.get("A8").setValue("Portugal");
        cells.get("B1").setValue("Sale");
        cells.get("B2").setValue(70000);
        cells.get("B3").setValue(55000);
        cells.get("B4").setValue(30000);
        cells.get("B5").setValue(40000);
        cells.get("B6").setValue(35000);
        cells.get("B7").setValue(32000);
        cells.get("B8").setValue(10000);

        //Create chart
        int chartIndex = sheet.getCharts().add(ChartType.COLUMN, 12, 1, 33, 12);
        Chart chart = sheet.getCharts().get(chartIndex);

        //Set properties of chart title
        chart.getTitle().setText("Sales By Region");
        chart.getTitle().getTextFont().setBold(true);
        chart.getTitle().getTextFont().setSize(12);

        //Set properties of nseries
        chart.getNSeries().add("Data!B2:B8", true);
        chart.getNSeries().setCategoryData("Data!A2:A8");

        //Set the fill colors for the series's data points (France - Portugal(7 points))
        ChartPointCollection chartPoints = chart.getNSeries().get(0).getPoints();

        ChartPoint point = chartPoints.get(0);
        point.getArea().setForegroundColor(Color.getCyan());

        point = chartPoints.get(1);
        point.getArea().setForegroundColor(Color.getBlue());

        point = chartPoints.get(2);
        point.getArea().setForegroundColor(Color.getYellow());

        point = chartPoints.get(3);
        point.getArea().setForegroundColor(Color.getRed());

        point = chartPoints.get(4);
        point.getArea().setForegroundColor(Color.getBlack());

        point = chartPoints.get(5);
        point.getArea().setForegroundColor(Color.getGreen());

        point = chartPoints.get(6);
        point.getArea().setForegroundColor(Color.getMaroon());

        //Set the legend invisible
        chart.setShowLegend(false);

        //Get the Chart image
        ImageOrPrintOptions imgOpts = new ImageOrPrintOptions();
        imgOpts.setImageFormat(ImageFormat.getPng());

        //Save the chart image file.
        chart.toImage(new FileOutputStream(dataDir + "AsposeChartImage.png"), imgOpts);
    }	
}
